/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.disco.gco.ngc;

import com.jjsoft.disco.gco.dao.GenericController;
import com.jjsoft.disco.gco.mdl.Categoria;
import com.jjsoft.disco.gco.util.AtributoInvalidoException;
import com.jjsoft.disco.gco.util.CategoriaValidadorException;
import com.jjsoft.disco.gco.util.IdDuplicadoException;
import com.jjsoft.disco.gco.util.ValidarAtributoUtil;
import java.util.List;

/**
 *
 * @author FernandoBac
 */
public class CategoriaManager {
    GenericController<Categoria> controladorCategoria = new GenericController<Categoria>();
    public void crearCategoria(Categoria categoria) throws CategoriaValidadorException
    {
        try {
            ValidarAtributoUtil.validarObjetoNulo("Categoria", categoria);
            ValidarAtributoUtil.validarStringNuloVacio("Nombre", categoria.getNombre());
            if(controladorCategoria.create(categoria).equals("1"))
            {
                throw new CategoriaValidadorException(new IdDuplicadoException("Ya existe una categoria con ese número de identificación",categoria.getIdCategoria()));
            }
        } catch (AtributoInvalidoException ex) {
            throw new CategoriaValidadorException(ex);
        }    
    }
    
    public void editarCategoria(Categoria categoria) throws CategoriaValidadorException
    {
        try {
            ValidarAtributoUtil.validarObjetoNulo("Categoria", categoria);
            ValidarAtributoUtil.validarStringNuloVacio("Nombre", categoria.getNombre());
            controladorCategoria.edit(categoria);
        } catch (AtributoInvalidoException ex) {
            throw new CategoriaValidadorException(ex);
        }  catch (Exception ex) {
            throw new CategoriaValidadorException("Error desconocido");
        }
    }
    public List<Categoria> listarCategorias()
    {
        return controladorCategoria.findWhere(new Categoria(), "estado=0");
    }
    
   
    
    public void eliminarCategoria(Categoria categoria)
    {
        categoria.setEstado(1);
        try {
            controladorCategoria.edit(categoria);
        } catch (Exception ex) {
            ex.printStackTrace();
        } 
    }
}
